/*
 * Inicio.java
 *
 * Created on 21 de Maio de 2007, 18:23
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package qvoipm.dados;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.Date;

/**
 * Pacote de requisição do cliente por uma chamada, este
 * pacote é enviado do cliente ao servidor e aguarda a resposta
 * de um pacote de certificado.
 * @author Rodrigo
 */
public class Inicio extends Pacote {
    
    public static final byte ID = 1;
    public static final int SIZE = 4 + 4 + (Long.SIZE/Byte.SIZE) + (Long.SIZE/Byte.SIZE);
    
    private InetAddress ipOrigem;
    private InetAddress ipDestino;
    private Date dataHora;
    private long frequencia;
    
    /* buffer para ler buffer do pacote a atribuir IP */
    private final byte ip[] = new byte[4];
    
    public Inicio() {
	
    }
    
    public Inicio(byte bytes[], boolean withID) {
	super(bytes, withID);
    }
    
    protected void fromBytes(ByteBuffer buffer) {
		
	try {
	    
	    buffer.get(ip);
	    ipOrigem = InetAddress.getByAddress(ip);
	    buffer.get(ip);
	    ipDestino = InetAddress.getByAddress(ip);	    
	} catch (UnknownHostException ex) {
	    ex.printStackTrace();
	}
	if (dataHora != null)	    
	    dataHora.setTime(buffer.getLong());
	else
	    dataHora = new Date(buffer.getLong());
	frequencia = buffer.getLong();
    }
    
    public byte getID() {
	return ID;
    }
    
    public int getTamanho() {
	return SIZE;
    }
    
    protected void writeBytes(ByteBuffer buffer) {
	
	buffer.put(ipOrigem.getAddress());
	buffer.put(ipDestino.getAddress());
	buffer.putLong(dataHora.getTime());
	buffer.putLong(frequencia);
    }
    
    public InetAddress getIpOrigem() {
	return ipOrigem;
    }
    
    public void setIpOrigem(InetAddress ipOrigem) {
	this.ipOrigem = ipOrigem;
    }
    
    public InetAddress getIpDestino() {
	return ipDestino;
    }
    
    public void setIpDestino(InetAddress ipDestino) {
	this.ipDestino = ipDestino;
    }
    
    public Date getDataHora() {
	return dataHora;
    }
    
    public void setDataHora(Date dataHora) {
	this.dataHora = dataHora;
    }
    
    public long getFrequencia() {
	return frequencia;
    }
    
    public void setFrequencia(long frequencia) {
	this.frequencia = frequencia;
    }
    
}
